RT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <vector>

int findLastPerson(long long n, long long m) {
    std::vector<long long> people(n);
    for (long long i = 0; i < n; ++i) {
        people[i] = i + 1; // 初始化人员编号
    }

    long long current = 0; // 当前报数的人的索引
    while (people.size() > 1) {
        current = (current + m - 1) % people.size();
        people.erase(people.begin() + current);
    }

    return people[0]; // 返回最后一个留下的人的编号
}

int main() {
    long long n = 10; // 人数
    long long m = 3; // 报数的数目

    long long lastPerson = findLastPerson(n, m);
    std::cout << "最后一个留下的人的编号是: " << lastPerson << std::endl;

    return 0;
}

//#include <iostream>
//#include <vector>
//#include <string>
//
//using namespace std;
//
//vector<string> spilt(string s, string str)
//{
//	vector<string> ret;
//
//	auto pos = s.find(str);
//	while (pos!=string::npos && s!="")
//	{
//		ret.push_back(s.substr(0, pos));
//		s.erase(0,pos+2);
//		pos = s.find(str);
//	}
//
//	ret.push_back(s.substr(0, pos));
//    for (int i = 0; i < ret.size(); i++)
//    {
//        cout << ret[i]<<" ";
//    }
//	cout << endl;
//	return ret;
//}
//
//string combination(vector<string>& input, string str)
//{
//	string ret;
//	for (auto& elm : input)
//	{
//		ret += elm;
//		ret += str;
//	}
//	int len = str.size();
//	ret.erase(ret.end()-len,ret.end());
//	return ret;
//}
//

//int main()
//{
//	//spilt("ab&&2&&1&&4", "&&");
//
//	vector<string> v{ "ab", "2", "3" };
//	string comb_char("&&");
//	cout<<combination(v, comb_char);
//	return 0;
//}

////头尾不可以有切分字符
//vector<string> spilt(string s, char ch)
//{
//    s.push_back(ch);
//    int start = 0, end = 0, size = s.size();
//    vector<string> vs;
//
//    for (int i = 0; i < size; i++)
//    {
//        if (s[i] == ch)
//        {
//            end = i;
//            string temp = s.substr(start, end - start);
//            start = i + 1;
//            vs.push_back(temp);
//        }
//    }
//    return vs;
//}
//int main()
//{
//    string s = "ab&&2";
//    vector<string> v = spilt(s, '&&');
//    cout << v.size() << endl;
//    for (int i = 0; i < v.size(); i++)
//    {
//        cout << v[i] << endl;
//    }
//}


//#include <iostream>
//#include <vector>
//#include <unordered_set>
//
//std::pair<int, int> FindDplicat(std::vector<int>& nums) {
//    std::unordered_set<int> set;
//    for (int num : nums) 
//    {
//        if (set.count(num) > 0) 
//        {
//            return std::make_pair(num, num);
//        }
//        set.insert(num);
//    }
//    return std::make_pair(-1, -1); // 找不到返回-1
//}
//
//int main() 
//{
//    std::vector<int> nums = { 4, 2, 3, 1, 6, 6, 0, 7, 5, 8, 9 }; 
//    std::pair<int, int> duplicates = FindDplicat(nums);
//
//    if (duplicates.first != -1 && duplicates.second != -1) 
//    {
//        std::cout<< duplicates.first  <<" "<< duplicates.second << std::endl;
//    }
//    return 0;
//}

//bool IsPrime(int num) {
//    if (num < 2) {
//        return false;
//    }
//    for (int i = 2; i * i <= num; i++) {
//        if (num % i == 0) 
//        {
//            return false;
//        }
//    }
//    return true;
//}
//
//int FindLargestPrime(int n) {
//    for (int num = n; num >= 2; num--) 
//    {
//        if (IsPrime(num)) 
//        {
//            return num;
//        }
//    }
//    return -1;
//}
//
//int main() {
//    int n = 100; 
//    int largestPrime = FindLargestPrime(n);
//    if (largestPrime != -1)
//    {
//        cout << largestPrime << endl;
//    }
//    return 0;
//}



